<template>
	<view class="content">
<canvas class="facecat" id="myCanvas" canvas-id="myCanvas" style="width:100%;height:1200rpx;"/>
	</view>
</template>
<script>
import facecat from './facecat.js';
let clickIndex = -1;
let tick = 0;
let exampleList = new facecat.FCGrid(); 

let checkPaint = function () {
    if (clickIndex != -1) {
        tick -= 20;
        if (tick <= 0) {
            tick = 0;
            clickIndex = -1;
        }
        facecat.invalidate(gPaint);
    }
};

setInterval(checkPaint, 30);


let gPaint = new facecat.FCPaint();

/*
* 点击方法
* view:视图
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
* clicks:点击次数
*/
let onClick = function (view, firstTouch, firstPoint, secondTouch, secondPoint, clicks) {
	facecat.onClickDefault(view, firstTouch, firstPoint, secondTouch, secondPoint, clicks);
};

/*
* 鼠标按下实现方法
* view:视图
* mp:坐标
* button:按钮
* clicks:点击次数
* delta:滚轮值
*/
let onMouseDown = function (view, mp, buttons, clicks, delta) {
	facecat.onMouseDownDefault(view, mp, buttons, clicks, delta);
};

/*
* 鼠标移动实现方法
* view:视图
* mp:坐标
* button:按钮
* clicks:点击次数
* delta:滚轮值
*/
let onMouseMove = function (view, mp, buttons, clicks, delta) {
	facecat.onMouseMoveDefault(view, mp, buttons, clicks, delta);
};

/*
* 鼠标滚动实现方法
* view:视图
* mp:坐标
* button:按钮
* clicks:点击次数
* delta:滚轮值
*/
let onMouseWheel = function (view, mp, buttons, clicks, delta) {
	if (window.event.ctrlKey && view.paint) {
		//放大显示
		if (delta < 0) {
			view.paint.scaleFactorX = view.paint.scaleFactorX + 0.1;
			view.paint.scaleFactorY = view.paint.scaleFactorY + 0.1;
			//resizeAll();
			//缩小显示
		} else if (delta > 0) {
			if (view.paint.scaleFactorX > 0.2) {
				view.paint.scaleFactorX = view.paint.scaleFactorX - 0.1;
				view.paint.scaleFactorY = view.paint.scaleFactorY - 0.1;
				//resizeAll();
			}
		}
		return;
	}
	facecat.onMouseWheelDefault(view, mp, buttons, clicks, delta);	
};

/*
* 鼠标抬起实现方法
* view:视图
* mp:坐标
* button:按钮
* clicks:点击次数
* delta:滚轮值
*/
let onMouseUp = function (view, mp, buttons, clicks, delta) {
	facecat.onMouseUpDefault(view, mp, buttons, clicks, delta);	
};

/*
* 触摸开始方法
* view:视图
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
*/
let onTouchBegin = function (view, firstTouch,  firstPoint, secondTouch, secondPoint) {
	facecat.onTouchBeginDefault(view, firstTouch,  firstPoint, secondTouch, secondPoint);
};

/*
* 触摸移动方法
* view:视图
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
*/
let onTouchMove = function (view, firstTouch,  firstPoint, secondTouch, secondPoint) {
	facecat.onTouchMoveDefault(view, firstTouch,  firstPoint, secondTouch, secondPoint);	
};

/*
* 触摸结束方法
* view:视图
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
*/
let onTouchEnd = function (view, firstTouch,  firstPoint, secondTouch, secondPoint) {
	facecat.onTouchEndDefault(view, firstTouch,  firstPoint, secondTouch, secondPoint);	
};

/*
* 单元格的点击方法
* grid: 表格
* row: 行
* column: 列
* cell: 单元格
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
*/
gPaint.onClickGridCell = function (grid, row, column, cell, firstTouch, firstPoint, secondTouch, secondPoint) {
	let rate = 1 - 210 / grid.size.cx;
	if (gPaint.isMobile) {
		rate = 0.5;
	}
	if (firstPoint.x >= grid.size.cx * rate + cell.diffX && firstPoint.x <= grid.size.cx * rate + cell.diffX * 2) {
		if (row.index < 2) {

		} else {
			window.location.href = cell.link2;
		}
	} else if (firstPoint.x >= grid.size.cx * rate && firstPoint.x <= grid.size.cx * rate + cell.diffX) {
		if (row.index < 2) {

		} else {
			window.location.href = cell.link;
		}
	} else {
		clickIndex = row.index;
		tick = 720;
	}
};


/*
* 列头的点击方法
* grid: 表格
* column: 列
* firstTouch:是否第一次触摸
* firstPoint:第一次触摸的坐标
* secondTouch:是否第二次触摸
* secondPoint:第二次触摸的坐标
*/
gPaint.onClickGridColumn = function (grid, column, firstTouch, firstPoint, secondTouch, secondPoint) {
	if (firstPoint.x > grid.size.cx - 50 && grid.scrollV < 150) {
		if (grid.paint.defaultUIStyle == "dark") {
			grid.paint.defaultUIStyle = "light";
		} else {
			grid.paint.defaultUIStyle = "dark";
		}
		if (exampleList.paint.defaultUIStyle == "dark") {
			exampleList.backColor = "rgb(0,0,0)";
			exampleList.borderColor = null;
			exampleList.textColor = "rgb(255,255,255)";
			exampleList.scrollBarColor = "rgb(100,100,100)";
		} else if (exampleList.paint.defaultUIStyle == "light") {
			exampleList.backColor = "rgb(230,230,230)";
			exampleList.borderColor = null;
			exampleList.textColor = "rgb(0,0,0)";
			exampleList.scrollBarColor = "rgb(200,200,200)";
		}
		facecat.invalidate(gPaint);
	}
};
/*
* 绘制单元格
* grid:表格
* row:行
* column:列
* cell:单元格
* paint:绘图对象
* left:左侧坐标
* top:上方坐标
* right:右侧坐标
* bottom:下方坐标
*/
gPaint.onPaintGridCell = function (grid, row, column, cell, paint, left, top, right, bottom) {
	let width = right - left, height = bottom - top;
	let colors = new Array();
	colors.push("rgb(170, 178, 189)");
	colors.push("rgb(140, 192, 81)");
	colors.push("rgb(59, 174, 218)");
	colors.push("rgb(219, 68, 83)");
	colors.push("rgb(246, 187, 67)");
	colors.push("rgb(216, 112, 173)");
	colors.push("rgb(150, 123, 220)");
	colors.push("rgb(75, 137, 220)");
	colors.push("rgb(185, 63, 150)");
	colors.push("rgb(233, 87, 62)");
	if (row.index < 2) {
		if (row.index == 1) {
			let eR = grid.rowHeight * 1.5;
			if (grid.scrollV > 0) {
				eR -= grid.scrollV / 3;
			}
			var text1s = new Array();
			var text2s = new Array();
			text1s.push("支持语言");
			text2s.push("10");
			text1s.push("支持平台");
			text2s.push("6");
			text1s.push("独立版本");
			text2s.push("22");
			if (!gPaint.isMobile && width > 500) {
				text1s.push("开发工具");
				text2s.push("5");
				text1s.push("扩展框架");
				text2s.push("27");
				text1s.push("基础软件");
				text2s.push("10");
				text1s.push("原创率");
				text2s.push("99%");
				text1s.push("研发年数");
				text2s.push("3.5");
			}
			let tLeft = left + (right - left - text1s.length * eR) / 2;
			for (let i = 0; i < text1s.length; i++) {
				let font1 = "Default,14";
				let font2 = "Default,35";
				if (grid.scrollV > 0) {
					font2 = "Default," + (35 - grid.scrollV / 5).toString();
					font1 = "Default," + (14 - grid.scrollV / 10).toString();
				}
				let tSize1 = paint.textSize(text1s[i], font1);
				let tSize2 = paint.textSize(text2s[i], font2);
				let firstRect = new facecat.FCRect(tLeft, top - eR / 2 - 10, tLeft + eR, top + eR / 2 - 10);
				firstRect.left += 10;
				firstRect.top += 10;
				firstRect.right -= 10;
				firstRect.bottom -= 10;
				if (grid.paint.defaultUIStyle == "dark") {
					paint.fillRoundRect("rgb(21,24,28)", firstRect.left, firstRect.top, firstRect.right, firstRect.bottom, 10);
					paint.drawText(text1s[i], "rgb(150,150,150)", font1, firstRect.left + (firstRect.right - firstRect.left - tSize1.cx) / 2, firstRect.top + 20 - tSize1.cy / 2);
					paint.drawText(text2s[i], "rgb(200,200,200)", font2, firstRect.left + (firstRect.right - firstRect.left - tSize2.cx) / 2, firstRect.top + (firstRect.bottom - firstRect.top - tSize2.cy) / 2);
				} else {
					paint.fillRoundRect("rgb(255,255,255)", firstRect.left, firstRect.top, firstRect.right, firstRect.bottom, 10);
					paint.drawRoundRect("rgb(200,200,200)", 1, 0, firstRect.left, firstRect.top, firstRect.right, firstRect.bottom, 10);
					paint.drawText(text1s[i], "rgb(100,100,100)", font1, firstRect.left + (firstRect.right - firstRect.left - tSize1.cx) / 2, firstRect.top + 20 - tSize1.cy / 2);
					paint.drawText(text2s[i], "rgb(50,50,50)", font2, firstRect.left + (firstRect.right - firstRect.left - tSize2.cx) / 2, firstRect.top + (firstRect.bottom - firstRect.top - tSize2.cy) / 2);
				}
				if (text1s.length > 3) {
					paint.fillRoundRect(colors[i % colors.length], firstRect.left + (firstRect.right - firstRect.left - 25 + grid.scrollV / 10) / 2, firstRect.bottom - 15 + grid.scrollV / 20, firstRect.left + (firstRect.right - firstRect.left + 25 - grid.scrollV / 10) / 2, firstRect.bottom - 10, 2);
				} else {
					paint.fillRoundRect("rgb(42,138,195)", firstRect.left + (firstRect.right - firstRect.left - 25 + grid.scrollV / 10) / 2, firstRect.bottom - 15 + grid.scrollV / 20, firstRect.left + (firstRect.right - firstRect.left + 25 - grid.scrollV / 10) / 2, firstRect.bottom - 10, 2);
				}
				if (tick > 0 && clickIndex <= 1) {
					let overTimes = tick;
					if (overTimes > 360) {
						overTimes -= 360;
					}
					let dRect = new facecat.FCRect(firstRect.left, firstRect.top, firstRect.right, firstRect.bottom);
					let dWidth = Math.min(dRect.right - dRect.left, dRect.bottom - dRect.top) / 2;
					let dInterval = 20;
					paint.drawRect("rgb(42,138,195)", 1, 0, dRect.left, dRect.top, dRect.right, dRect.bottom);
					if (overTimes < 90) {
						let fSize = (90 - overTimes) * (dWidth - dInterval) / 60;
						let eSize = overTimes * (dWidth - dInterval) / 60;
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right - fSize, dRect.top, dRect.right, dRect.top);
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.top, dRect.right, dRect.top + eSize);
					}
					else if (overTimes < 180) {
						let fSize = (90 - (overTimes - 90)) * (dWidth - dInterval) / 60;
						let eSize = (overTimes - 90) * (dWidth - dInterval) / 60;
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.bottom - fSize, dRect.right, dRect.bottom);
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.bottom, dRect.right - eSize, dRect.bottom);
					}
					else if (overTimes < 270) {
						let fSize = (90 - (overTimes - 180)) * (dWidth - dInterval) / 60;
						let eSize = (overTimes - 180) * (dWidth - dInterval) / 60;
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.bottom, dRect.left + fSize, dRect.bottom);
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.bottom, dRect.left, dRect.bottom - eSize);
					}
					else if (overTimes < 360) {
						let fSize = (90 - (overTimes - 270)) * (dWidth - dInterval) / 60;
						let eSize = (overTimes - 270) * (dWidth - dInterval) / 60;
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.top, dRect.left + eSize, dRect.top);
						paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.top, dRect.left, dRect.top + fSize);
					}
				}
				tLeft += eR;
			}
			let text1 = "产品列表";
			let font3 = "Default,14";
			let tSize1 = paint.textSize(text1, font3);
			if (grid.paint.defaultUIStyle == "dark") {
				paint.drawText(text1, "rgb(150,150,150)", font3, left + (right - left - tSize1.cx) / 2, bottom - tSize1.cy - tSize1.cy / 2);
			} else {
				paint.drawText(text1, "rgb(50,50,50)", font3, left + (right - left - tSize1.cx) / 2, bottom - tSize1.cy - tSize1.cy / 2);
			}
		}
	} else {
		if (grid.paint.defaultUIStyle == "dark") {
			paint.fillRoundRect("rgb(21,24,28)", left + 14, top + 5, right - 14, bottom - 5, 10);
		} else {
			paint.fillRoundRect("rgb(240,240,240)", left + 14, top + 5, right - 14, bottom - 5, 10);
		}
		let baseUpper = cell.text1;
		let font1 = "Default,15";
		let font2 = "Default,12";
		let font3 = "Default,14";
		let tSize = paint.textSize(baseUpper, font1);
		let str = "A" + tSize.cy;
		if (str == "ANaN") {
			tSize.cy = 12;
		}
		let strVolume = cell.text3;
		let strPrice = cell.text4;
		let tSize2 = paint.textSize(strVolume, font2);
		str = "A" + tSize2.cy;
		if (str == "ANaN") {
			tSize2.cy = 12;
		}
		if (grid.paint.defaultUIStyle == "dark") {
			paint.drawText(baseUpper, "rgb(200,200,200)", font1, left + 26, top + height / 2 - tSize2.cy - tSize.cy / 2);
			paint.drawText(strVolume, "rgb(200,200,200)", font2, left + 39, top + height / 2 + tSize2.cy + 3 - tSize2.cy / 2);
		} else {
			paint.drawText(baseUpper, "rgb(50,50,50)", font1, left + 26, top + height / 2 - tSize2.cy - tSize.cy / 2);
			paint.drawText(strVolume, "rgb(50,50,50)", font2, left + 39, top + height / 2 + tSize2.cy + 3 - tSize2.cy / 2);
		}
		let drawColor = "rgb(255,0,0)";
		paint.fillEllipse(colors[Number(cell.linkType) - 1], left + 26, top + height / 2 + 3 + tSize2.cy - 4, left + 34, top + height / 2 + 3 + tSize2.cy + 4);
		let tSize5 = paint.textSize("100000.00%", font3);
		str = "A" + tSize5.cy;
		if (str == "ANaN") {
			tSize5.cy = 12;
		}
		let rate2 = 1 - 210 / width;
		if (gPaint.isMobile) {
			rate2 = 0.5;
		}
		let colRect = new facecat.FCRect(left + width * rate2 + 5, top + height / 2 - tSize5.cy - 4, left + width * rate2 + 5 + tSize5.cx, top + height / 2 + tSize5.cy + 3);
		if (!gPaint.isMobile && width > 500) {
			if (grid.paint.defaultUIStyle == "dark") {
				paint.drawTextAutoEllipsis(strPrice, "rgb(200,200,200)", font3, left + 200 + 30, top + height / 2 - tSize5.cy / 2, width - 250, left + 230 + 5 + tSize5.cy - tSize5.cy / 2);
			} else {
				paint.drawTextAutoEllipsis(strPrice, "rgb(50,50,50)", font3, left + 200 + 30, top + height / 2 - tSize5.cy / 2, width - 250, left + 230 + 5 + tSize5.cy - tSize5.cy / 2);
			}
			paint.fillRect(grid.backColor, width - 240, top + 5, width - 230, bottom - 5);
			paint.fillRect(grid.backColor, left + 200, top + 5, left + 200 + 10, bottom - 5);
			//paint.drawLine("rgb(50,50,50)", 1, 0, left + 200 + 5 - 10, top, left + 200 + 5 - 10, bottom);
			//paint.drawLine("rgb(50,50,50)", 1, 0, width - 220, top, width - 220, bottom);
		}
		if (grid.paint.defaultUIStyle == "dark") {
			paint.fillRoundRect("rgb(32,36,38)", colRect.left, top + 15, colRect.right, bottom - 15, 5);
			//paint.drawRoundRect("rgb(75,75,75)", 1, 0, colRect.left, colRect.top, colRect.right, colRect.bottom, 10);
		} else {
			paint.fillRoundRect("rgb(255,255,255)", colRect.left, top + 15, colRect.right, bottom - 15, 5);
			paint.drawRoundRect("rgb(200,200,200)", 1, 0, colRect.left, top + 15, colRect.right, bottom - 15, 5);
		}

		let diffX = colRect.right - colRect.left + 10;
		if (cell.linkText2.length > 0) {
			if (grid.paint.defaultUIStyle == "dark") {
				paint.fillRoundRect("rgb(32,36,38)", colRect.left + diffX, top + 15, colRect.right + diffX, bottom - 15, 5);
				//paint.drawRoundRect("rgb(75,75,75)", 1, 0, colRect.left + diffX, colRect.top, colRect.right + diffX, colRect.bottom, 4);
			} else {
				paint.fillRoundRect("rgb(255,255,255)", colRect.left + diffX, top + 15, colRect.right + diffX, bottom - 15, 5);
				paint.drawRoundRect("rgb(200,200,200)", 1, 0, colRect.left + diffX, top + 15, colRect.right + diffX, bottom - 15, 5);
			}
		}
		cell.diffX = diffX;
		let tSize4 = paint.textSize(cell.linkText1, font3);
		let tSize6 = paint.textSize(cell.linkText2, font3);
		let offsetRight = 15;
		 if (cell.image) {
			if (!cell.initImage) {
				cell.initImage = true;
				uni.getImageInfo({
					src:cell.image,
					success:(res)=>{
						cell.image2 = res.path;
						facecat.invalidateView(grid);
					}
				})
			}
		}
		if (grid.paint.defaultUIStyle == "dark") {
			paint.drawText(cell.linkText1, "rgb(200,200,200)", font3, left + width * rate2 + 5 + tSize5.cx / 2 - tSize4.cx / 2 - 15, top + height / 2 - tSize4.cy / 2);
		} else {
			paint.drawText(cell.linkText1, "rgb(50,50,50)", font3, left + width * rate2 + 5 + tSize5.cx / 2 - tSize4.cx / 2 - 15, top + height / 2 - tSize4.cy / 2);
		}
		let tLeft1 = left + width * rate2 + 5 + tSize5.cx / 2 - tSize4.cx / 2 - 15 + tSize4.cx + 10;
		let tLeftRect = new facecat.FCRect(tLeft1 + 2, top + height / 2 - 10, tLeft1 + 20 - 2, top + height / 2 + 10);
		if (grid.paint.defaultUIStyle == "dark") {
			paint.drawRect("rgb(75,75,75)", 1, 0, tLeftRect.left, tLeftRect.top, tLeftRect.right, tLeftRect.bottom);
			paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4);
			paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2);
			paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4);
		} else {
			paint.drawRect("rgb(175,175,175)", 1, 0, tLeftRect.left, tLeftRect.top, tLeftRect.right, tLeftRect.bottom);
			paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4);
			paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2);
			paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4);
		}
		if (cell.linkText2.length > 0) {
			if (cell.image2) {
				let tLeft = left + width * rate2 + 5 + tSize5.cx / 2 - tSize6.cx / 2 + diffX - offsetRight;
				if (grid.paint.defaultUIStyle == "dark") {
					paint.drawText(cell.linkText2, "rgb(200,200,200)", font3, tLeft, top + height / 2 - tSize4.cy / 2);
				} else {
					paint.drawText(cell.linkText2, "rgb(50,50,50)", font3, tLeft, top + height / 2 - tSize4.cy / 2);
				}
				paint.drawImage(cell.image2, tLeft + tSize6.cx + 10, top + height / 2 - 12, tLeft + tSize6.cx + 34, top + height / 2 + 12);
			} else {
				let tLeft = left + width * rate2 + 5 + tSize5.cx / 2 - tSize6.cx / 2 + diffX - offsetRight;
				if (grid.paint.defaultUIStyle == "dark") {
					paint.drawText(cell.linkText2, "rgb(200,200,200)", font3, tLeft, top + height / 2 - tSize4.cy / 2);
				} else {
					paint.drawText(cell.linkText2, "rgb(50,50,50)", font3, tLeft, top + height / 2 - tSize4.cy / 2);
				}
				let tLeft1 = tLeft + tSize6.cx + 10;
				tLeftRect = new facecat.FCRect(tLeft1 + 2, top + height / 2 - 10, tLeft1 + 20 - 2, top + height / 2 + 10);
				if (grid.paint.defaultUIStyle == "dark") {
					paint.drawRect("rgb(75,75,75)", 1, 0, tLeftRect.left, tLeftRect.top, tLeftRect.right, tLeftRect.bottom);
					paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4);
					paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2);
					paint.drawLine("rgb(75,75,75)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4);
				} else {
					paint.drawRect("rgb(175,175,175)", 1, 0, tLeftRect.left, tLeftRect.top, tLeftRect.right, tLeftRect.bottom);
					paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 4);
					paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) / 2);
					paint.drawLine("rgb(175,175,175)", 1, 0, tLeftRect.left + 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4, tLeftRect.right - 5, tLeftRect.top + (tLeftRect.bottom - tLeftRect.top) * 3 / 4);
				}
			}
		}
		if (tick > 0 && clickIndex == row.index) {
			let overTimes = tick;
			if (overTimes > 360) {
				overTimes -= 360;
			}
			let dRect = new facecat.FCRect(left + 14, top + 5, right - 14, bottom - 5);
			let dWidth = Math.min(dRect.right - dRect.left, dRect.bottom - dRect.top);
			let dInterval = 20;
			if (gPaint.isMobile) {
				if (tick > 400) {
					let showRect = new facecat.FCRect(-200 + grid.size.cx * (720 - tick) / 200, dRect.top, grid.size.cx * (720 - tick) / 200, dRect.bottom);
					if (showRect.left < dRect.left) {
						showRect.left = dRect.left;
					}
					if (showRect.left > dRect.right) {
						showRect.left = dRect.right;
					}
					if (showRect.right > dRect.right) {
						showRect.right = dRect.right;
					}
					paint.fillRect("rgba(42,138,195,100)", showRect.left, showRect.top, showRect.right, showRect.bottom);
				}
			}
			paint.drawRect("rgb(42,138,195)", 1, 0, dRect.left, dRect.top, dRect.right, dRect.bottom);
			if (overTimes < 90) {
				let fSize = (90 - overTimes) * (dWidth - dInterval) / 60;
				let eSize = overTimes * (dWidth - dInterval) / 60;
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right - fSize, dRect.top, dRect.right, dRect.top);
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.top, dRect.right, dRect.top + eSize);
			}
			else if (overTimes < 180) {
				let fSize = (90 - (overTimes - 90)) * (dWidth - dInterval) / 60;
				let eSize = (overTimes - 90) * (dWidth - dInterval) / 60;
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.bottom - fSize, dRect.right, dRect.bottom);
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.right, dRect.bottom, dRect.right - eSize, dRect.bottom);
			}
			else if (overTimes < 270) {
				let fSize = (90 - (overTimes - 180)) * (dWidth - dInterval) / 60;
				let eSize = (overTimes - 180) * (dWidth - dInterval) / 60;
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.bottom, dRect.left + fSize, dRect.bottom);
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.bottom, dRect.left, dRect.bottom - eSize);
			}
			else if (overTimes < 360) {
				let fSize = (90 - (overTimes - 270)) * (dWidth - dInterval) / 60;
				let eSize = (overTimes - 270) * (dWidth - dInterval) / 60;
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.top, dRect.left + eSize, dRect.top);
				paint.drawLine("rgba(42,138,195,200)", 3, 0, dRect.left, dRect.top, dRect.left, dRect.top + fSize);
			}
		}
	}
};

/*
* 绘制列
* grid:表格
* column:列
* paint:绘图对象
* left:左侧坐标
* top:上方坐标
* right:右侧坐标
* bottom:下方坐标
*/
gPaint.onPaintGridColumn = function (grid, column, paint, left, top, right, bottom) {
	if (grid.scrollV < 150) {
		let width = right - left, height = bottom - top;
		let font2 = "Default,16";
		let tSize = paint.textSize("@花卷猫官方", font2);
		if (!column.image2) {
			uni.getImageInfo({
				src:"http://www.jjmfc.com/index_files/logo.png",
				success:(res)=>{
					column.image2 = res.path;
					facecat.invalidateView(grid);
				}
			})
		}
		else {
			let iR = 20;
			let imageRect = new facecat.FCRect(20, 30 - iR, 20 + iR * 2, 30 + iR);
			if (paint.defaultUIStyle == "light") {
				paint.fillEllipse("rgb(240,240,240)", imageRect.left, imageRect.top, imageRect.right, imageRect.bottom);
			} else {
				paint.fillEllipse("rgb(32,36,38)", imageRect.left, imageRect.top, imageRect.right, imageRect.bottom);
			}

			if (paint.defaultUIStyle == "light") {
				paint.drawText("@花卷猫官方", "rgb(0,0,0)", font2, imageRect.right + 10, imageRect.top + (imageRect.bottom - imageRect.top) / 2 - tSize.cy / 2);
			} else {
				paint.drawText("@花卷猫官方", "rgb(200,200,200)", font2, imageRect.right + 10, imageRect.top + (imageRect.bottom - imageRect.top) / 2 - tSize.cy / 2);
			}
			imageRect.left += 6;
			imageRect.top += 6;
			imageRect.right -= 6;
			imageRect.bottom -= 6;
			paint.drawImage(column.image2, imageRect.left, imageRect.top, imageRect.right, imageRect.bottom);
		}

		let bR = 10;
		let blackWhiteRect = new facecat.FCRect(grid.size.cx - 25 - bR, 25 - bR, grid.size.cx - 25 + bR, 25 + bR);
		if (paint.defaultUIStyle == "light") {
			paint.fillEllipse("rgb(175,175,175)", blackWhiteRect.left, blackWhiteRect.top, blackWhiteRect.right, blackWhiteRect.bottom);
		} else {
			paint.fillEllipse("rgb(70,76,79)", blackWhiteRect.left, blackWhiteRect.top, blackWhiteRect.right, blackWhiteRect.bottom);
		}
		blackWhiteRect.left += bR;
		blackWhiteRect.right += bR;
		paint.fillEllipse(grid.backColor, blackWhiteRect.left, blackWhiteRect.top, blackWhiteRect.right, blackWhiteRect.bottom);
	}
};
	
export default { 
	data() {
		return {
		}
	},
	onLoad() {
	}, 
	mounted(){
			const canvas = document.querySelector('#myCanvas');
			gPaint.isMobile = facecat.isMobileMode();
			//注册事件
			facecat.addMouseDownEvent(canvas, gPaint, onMouseDown);
			facecat.addMouseMoveEvent(canvas, gPaint, onMouseMove);
			facecat.addMouseWheelEvent(canvas, gPaint, onMouseWheel);
			facecat.addMouseUpEvent(canvas, gPaint, onMouseUp, onClick);
			facecat.addTouchBeginEvent(canvas, gPaint, onTouchBegin);
			facecat.addTouchMoveEvent(canvas, gPaint, onTouchMove);
			facecat.addTouchEndEvent(canvas, gPaint, onTouchEnd, onClick);
			uni.createSelectorQuery().in(this).select(".facecat").boundingClientRect(data=>
			{
				this.widthEle = data.width;
				this.heightEle = data.height;
			}).exec(); 
			canvas.width = this.widthEle;
			canvas.height = this.heightEle;
			gPaint.canvas = canvas;
			gPaint.container = this;
			let canvasSize = new facecat.FCSize(this.widthEle, this.heightEle);
			/*
			* 重绘背景的实现方法
			* view:视图
			* paint:绘图对象
			* clipRect:裁剪区域
			*/
			gPaint.onPaint = function (view, paint, clipRect) {
				facecat.onPaintDefault(view, paint, clipRect);
			};
					
			/*
			* 重绘边框的实现方法
			* view:视图
			* paint:绘图对象
			* clipRect:裁剪区域
			*/
			gPaint.onPaintBorder = function (view, paint, clipRect) {
				if (view.viewType == "grid") {
					facecat.drawDivBorder(view, paint, clipRect);
					facecat.drawGridScrollBar(view, paint, clipRect);
				}
				else if (view.viewType == "tree") {
					facecat.drawDivBorder(view, paint, clipRect);
					facecat.drawTreeScrollBar(view, paint, clipRect);
				}
				else if (view.viewType == "div") {
					facecat.drawDivBorder(view, paint, clipRect);
					facecat.drawDivScrollBar(view, paint, clipRect);
				}
				else if (view.viewType == "tabview") {
					facecat.drawTabViewBorder(view, paint, clipRect);
				}
			};
			 /*
			  * 更新布局的实现方法
			  * views:视图集合
			  */
			gPaint.onUpdateView = function (views) {
				facecat.updateViewDefault(views);
			}
			gPaint.defaultUIStyle = "dark";
			facecat.addView(exampleList, gPaint);
			if (exampleList.paint.defaultUIStyle == "dark") {
				exampleList.backColor = "rgb(0,0,0)";
				exampleList.borderColor = null;
				exampleList.textColor = "rgb(255,255,255)";
				exampleList.scrollBarColor = "rgb(100,100,100)";
			} else if (exampleList.paint.defaultUIStyle == "light") {
				exampleList.backColor = "rgb(230,230,230)";
				exampleList.borderColor = null;
				exampleList.textColor = "rgb(0,0,0)";
				exampleList.scrollBarColor = "rgb(200,200,200)";
			}
			exampleList.location = new facecat.FCPoint(0, 0);
			exampleList.size = new facecat.FCSize(canvasSize.cx, canvasSize.cy);
			exampleList.visible = true;
	
			exampleList.rowHeight = 80;
			exampleList.headerHeight = 50;
			let column1List = new facecat.FCGridColumn();
			column1List.text = "id";
			column1List.width = exampleList.size.cx;
			exampleList.columns.push(column1List);
			if (exampleList.paint.defaultUIStyle == "dark") {
				column1List.backColor = "rgb(0,0,0)";
				column1List.borderColor = "rgb(100,100,100)";
				column1List.textColor = "rgb(255,255,255)";
			} else if (exampleList.paint.defaultUIStyle == "light") {
				column1List.backColor = "rgb(255,255,255)";
				column1List.borderColor = "rgb(150,150,150)";
				column1List.textColor = "rgb(0,0,0)";
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "项目简介";
				cell.text2 = "";
				cell.text3 = "国产基础框架和软件";
				cell.text4 = "国产专业基础框架和软件，自研各种跨平台或跨语言的图形、通讯、服务、存储、计算、编程语言、多端互动、人工智能等基础框架，并优先拿自己的框架做自己的行业产品";
				cell.link = "http://www.jjmfc.com/software/desc/project.txt";
				cell.link2 = "http://xhslink.com/VKxhJu";
				cell.linkText1 = "描述";
				cell.linkText2 = "视频";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫终端Windows版";
				cell.text2 = "";
				cell.text3 = "开发工具 原创度99%";
				cell.text4 = "框架可视化设计、代码编辑器、多端互动、浏览器、网页收集、工具箱等，解压直接使用";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485734&idx=1&sn=f06f0603e911bb90a3ade66140db2a29&chksm=c0571786f7209e90b0f037c8c09cf72110c0bd20537065696c013f915467f77aeca1a215999c#rd";
				cell.link2 = "http://www.jjmfc.com/FaceCat.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.image = "http://www.jjmfc.com/index_files/windows.png";
				cell.linkType = "2";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫终端MacOS版";
				cell.text2 = "";
				cell.text3 = "开发工具 原创度100%";
				cell.text4 = "框架可视化设计、代码编辑器、多端互动、浏览器、网页收集、工具箱等，打开dmg拖拽到应用中，并到系统偏好设置中添加信任";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485736&idx=1&sn=5a15db26f189e83a0c5c56177ba9a806&chksm=c0571788f7209e9ef9e61a47f36e49d8b0614ee04eceda09bdacdcf71c99a166a8eaf2b00412#rd";
				cell.link2 = "http://www.jjmfc.com/FaceCat.dmg";
				cell.image = "http://www.jjmfc.com/index_files/macos.png";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.linkType = "2";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫终端安卓版";
				cell.text2 = "";
				cell.text3 = "开发工具 原创度99%";
				cell.text4 = "框架可视化设计、代码编辑器、多端互动、浏览器、网页收集、工具箱等，直接下载安装，每次提示更新后需要手动安装";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485737&idx=1&sn=5e8cf8839e7f812c56981938c8c9b59f&chksm=c0571789f7209e9fa2dc4645702365101e7f4e06edd0c1d1e1d227befeb1c94907a971f70c3d#rd";
				cell.link2 = "http://www.jjmfc.com/FaceCat.apk";
				cell.image = "http://www.jjmfc.com/index_files/android.png";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.linkType = "2";
				row.cells.push(cell);
			}
	
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫终端iOS版";
				cell.text2 = "";
				cell.text3 = "开发工具 原创度100%";
				cell.text4 = "框架可视化设计、代码编辑器、多端互动、浏览器、网页收集、工具箱等，未上线AppStore，由用户自己用XCode安装";
				cell.link = "http://www.jjmfc.com/software/desc/iosapp.txt";
				cell.link2 = "http://www.jjmfc.com/software/iosapp.zip";
				cell.image = "http://www.jjmfc.com/index_files/apple.png";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.linkType = "2";
				row.cells.push(cell);
			}
	
	if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫多端互动Ubuntu版";
				cell.text2 = "";
				cell.text3 = "开发工具 原创度99%";
				cell.text4 = "只有跨平台互发消息和文件的功能，包含完整的源代码，用户可以自己编译运行";
				cell.link = "http://www.jjmfc.com/software/desc/neuronclient.txt";
				cell.link2 = "http://www.jjmfc.com/software/neuronclient.zip";
				cell.image = "http://www.jjmfc.com/index_files/linux.png";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.linkType = "2";
				row.cells.push(cell);
			}
	
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫C/C++框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的Windows客户端和服务，全部使用C/C++构建，整个界面使用单个窗体重绘，内部元素的鼠标和输入操作均为模拟，另外Ubuntu/Linux、Android/HarmonyOS NDK版本也已基本完成";
				cell.link = "http://www.jjmfc.com/document/FaceCat.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_cpp.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cpp2.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Java-Android框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的安卓App，全部使用Java构建，整个界面使用单个View重绘，内部元素的触摸和滚动加速操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Java.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_android.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/android.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Java-Swing框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度99%";
				cell.text4 = "用于制作要求较高的Linux客户端和服务，全部使用Java构建，整个界面使用单个JPanel重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Java.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_swing.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/java.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫C#框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的Windows客户端和服务，全部使用C#构建，整个界面使用单个Control重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-CS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_cs.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫MacOS C++框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的MacOS客户端，全部使用C/C++构建，整个界面使用单个NSView重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_macos.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/macos.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫iOS C++框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的iOS-App，全部使用C/C++构建，整个界面使用单个UIView重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_ios.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/ios.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
	 if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫WPF框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的WPF客户端，全部使用C#构建，整个界面使用单个Control重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-CS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_wpf.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/wpf.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫HarmonyOS框架";
				cell.text2 = "";
				cell.text3 = "综合基础框架 原创度100%";
				cell.text4 = "用于制作要求较高的鸿蒙原生应用，全部使用Java构建，整个界面使用单个Component重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Java.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_ohos.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/hos.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
	
	 if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫JavaScript框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作Html5的可交互矢量图形，使用JavaScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-JS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_h5.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/html5.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	
	
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Python框架";
				cell.text2 = "";
				cell.text3 = "客户端基础框架 原创度99%";
				cell.text4 = "用于制作Windows客户端，使用Python构建，整个界面使用单个窗体重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Python.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_py.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/python.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Rust框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作Html5的可交互矢量图形，使用Wasm技术，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Rust.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_rust.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/rust.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Flutter框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作跨平台的可交互矢量图形，使用Dart构建，整个界面使用单个CustomPaint重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Dart.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_flutter.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/flutter.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	
		   if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫SwiftUI框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作MacOS和iOS的原生可交互矢量图形，使用Swift构建，整个界面使用单个UIView重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Swift.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_swiftui.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/swiftui.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Go框架";
				cell.text2 = "";
				cell.text3 = "客户端基础框架 原创度100%";
				cell.text4 = "用于制作Windows客户端，使用Go构建，整个界面使用单个窗体重绘，内部元素的鼠标和输入操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-Go.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_go.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/go.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
	  if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫TypeScript框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作前端可交互矢量图形，使用TypeScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-TS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_ts.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/ts.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Vue框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作前端可交互矢量图形，使用JavaScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-JS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_vue.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/vue.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫ReactNative框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度99%";
				cell.text4 = "用于制作前端可交互矢量图形，使用JavaScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-JS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_rn.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/react.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫UniApp框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度100%";
				cell.text4 = "用于制作UniApp的可交互矢量图形，使用JavaScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-JS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_uniapp.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/uniapp.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫小程序框架";
				cell.text2 = "";
				cell.text3 = "矢量图形框架 原创度99%";
				cell.text4 = "用于制作小程序的可交互矢量图形，使用JavaScript构建，整个界面使用单个Canvas重绘，内部元素的触摸和加速滚动操作均为模拟";
				cell.link = "http://www.jjmfc.com/document/FaceCat-JS.pdf";
				cell.link2 = "http://www.jjmfc.com/software/facecat_wechat.zip";
				cell.linkText1 = "文档";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/mini.png";
				cell.linkType = "4";
				row.cells.push(cell);
			}
		  
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "JavaScript在线示例";
				cell.text2 = "";
				cell.text3 = "组件示例";
				cell.text4 = "JavaScript+Canvas网页展示框架效果，包含十几个组件的示例";
				cell.link = "http://www.jjmfc.com/test/example.html";
				cell.link2 = "";
				cell.linkText1 = "打开";
				cell.linkText2 = "";
				cell.linkType = "5";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "Rust在线示例";
				cell.text2 = "";
				cell.text3 = "组件示例";
				cell.text4 = "Wasm网页展示框架效果，包含几个重要组件的示例";
				cell.link = "http://www.jjmfc.com:8080";
				cell.link2 = "";
				cell.linkText1 = "打开";
				cell.linkText2 = "";
				cell.linkType = "5";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫长连接框架";
				cell.text2 = "";
				cell.text3 = "后端基础框架 原创度100%";
				cell.text4 = "用于制作多种语言的长连接服务，包含C/C++、C#、Java三个版本";
				cell.link = "http://www.jjmfc.com/software/desc/fcsocket.txt";
				cell.link2 = "http://www.jjmfc.com/software/fcsocket.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cpp2.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫多端互动服务端";
				cell.text2 = "";
				cell.text3 = "后端扩展框架 原创度100%";
				cell.text4 = "用于私有部署多端互动服务，使用Java构建";
				cell.link = "http://www.jjmfc.com/software/desc/neuron.txt";
				cell.link2 = "http://www.jjmfc.com/software/neuron.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/java.png";
				cell.linkType = "3";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Python+WebView2";
				cell.text2 = "";
				cell.text3 = "客户端框架 整合型";
				cell.text4 = "用于制作Windows客户端，使用JavaScript构建界面，可调用Python代码";
				cell.link = "http://www.jjmfc.com/software/desc/pywebview.txt";
				cell.link2 = "http://www.jjmfc.com/software/pywebview.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/python.png";
				cell.linkType = "6";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Go+WebView2";
				cell.text2 = "";
				cell.text3 = "客户端框架 整合型";
				cell.text4 = "用于制作Windows客户端，使用JavaScript来构建界面，可调用Go代码";
				cell.link = "http://www.jjmfc.com/software/desc/gowebview.txt";
				cell.link2 = "http://www.jjmfc.com/software/gowebview.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/go.png";
				cell.linkType = "6";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫C#+WebView2";
				cell.text2 = "";
				cell.text3 = "客户端框架 整合型";
				cell.text4 = "用于制作Windows客户端，使用C#构建原生界面，使用JavaScript构建网页栈界面";
				cell.link = "http://www.jjmfc.com/software/desc/cswebview.txt";
				cell.link2 = "http://www.jjmfc.com/software/cswebview.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "6";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Html5+ECharts";
				cell.text2 = "";
				cell.text3 = "网页框架 整合型";
				cell.text4 = "用于制作前端程序，使用Html5构建界面，然后嵌入ECharts";
				cell.link = "http://www.jjmfc.com/software/desc/fcecharts.txt";
				cell.link2 = "http://www.jjmfc.com/software/fcecharts.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/html5.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
	 if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫C#+HZH";
				cell.text2 = "";
				cell.text3 = "工控框架 整合型";
				cell.text4 = "花卷猫框架和第三方工控框架的融合案例，可以使用设计器来对原生视图进行布局，并扩展个别更多自定义组件";
				cell.link = "http://www.jjmfc.com/software/desc/hzh.txt";
				cell.link2 = "http://www.jjmfc.com/software/hzh.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫C#+PCHMI";
				cell.text2 = "";
				cell.text3 = "PLC框架 整合型";
				cell.text4 = "花卷猫框架和第三方PLC框架的融合案例，可以使用设计器来对原生视图进行布局，并扩展个别更多自定义组件";
				cell.link = "http://www.jjmfc.com/software/desc/pchmi.txt";
				cell.link2 = "http://www.jjmfc.com/software/pchmi.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "QStock财经数据";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "终端内置功能，通过第三方的QStock来获取几十种财经数据";
				cell.link = "http://www.jjmfc.com/software/desc/qstock.txt";
				cell.link2 = "http://www.jjmfc.com/software/qstock.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/python.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫相似数据框架";
				cell.text2 = "";
				cell.text3 = "行业框架 原创度100%";
				cell.text4 = "使用C++编写，可以对上千个品种的完整K线进行快速的相似比较";
				cell.link = "http://www.jjmfc.com/software/desc/like.txt";
				cell.link2 = "http://www.jjmfc.com/software/like.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cpp2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫股票行情框架";
				cell.text2 = "";
				cell.text3 = "行业框架 原创度100%";
				cell.text4 = "服务端有C#和Java两个版本，用于搭建私人的股票行情服务系统，可以选择长连接或短连接";
				cell.link = "http://www.jjmfc.com/software/desc/chartquote.txt";
				cell.link2 = "http://www.jjmfc.com/software/chartquote.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫期货行情框架";
				cell.text2 = "";
				cell.text3 = "行业框架 原创度100%";
				cell.text4 = "服务端为C#，用于搭建私人的期货行情服务系统，可以选择长连接或短连接";
				cell.link = "http://www.jjmfc.com/software/desc/futurequote.txt";
				cell.link2 = "http://www.jjmfc.com/software/futurequote.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				row.cells.push(cell);
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫金融公式库";
				cell.text2 = "";
				cell.text3 = "行业框架 原创度100%";
				cell.text4 = "使用Python等语言进行调用，来计算和获取指标公式的结果";
				cell.link = "http://www.jjmfc.com/software/desc/formula_py.txt";
				cell.link2 = "http://www.jjmfc.com/software/formula_py.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/python.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "OwChart证券图形框架";
				cell.text2 = "";
				cell.text3 = "行业框架 原创度100%";
				cell.text4 = "花卷猫框架的轻量子集，全部使用C#构建界面";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247484604&idx=1&sn=8efeff8a2766e105c0e3743cdaa9f838&chksm=c0571a1cf720930aa1c706a14eeed4e8e2f7a5cb990e066bce52ef53a1c84ed982d54cc9b664#rd";
				cell.link2 = "http://www.jjmfc.com/software/owchart.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-Python";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用Python来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctppy.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctppy.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/python.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-C++";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用C++来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctpcpp.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpcpp.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cpp2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-Java";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用Java来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctpjava.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpjava.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/java.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-Html5";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用JavaScript来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctphtml5.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctphtml5.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/html5.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-C#";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用C#来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctpcs.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpcs.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cs2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-GO";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用Go来开发图形和逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctpgo.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpgo.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/go.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-R";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，使用R语言来开发逻辑";
				cell.link = "http://www.jjmfc.com/software/desc/ctpr.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpr.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/r.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫CTP-Min";
				cell.text2 = "";
				cell.text3 = "行业框架 整合型";
				cell.text4 = "国内官方接口封装，有Win32和Linux两个版本";
				cell.link = "http://www.jjmfc.com/software/desc/ctpmin.txt";
				cell.link2 = "http://www.jjmfc.com/software/ctpmin.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "示例";
				cell.image = "http://www.jjmfc.com/index_files/cpp2.png";
				cell.linkType = "7";
				row.cells.push(cell);
			}
	
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫K线分析";
				cell.text2 = "";
				cell.text3 = "行业应用 原创度100%";
				cell.text4 = "Windows和MacOS均已上线，用于对历史K线进行各种分析";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247487173&idx=1&sn=78ef27b0aadcffea32e4a5677ecc7747&chksm=c0571065f72099734ceba18aa61089b62db725ff33b5fd26545384f53638443614816d26c09f#rd";
				cell.link2 = "http://www.jjmfc.com/FaceCat_KLine.zip";
				cell.linkText1 = "介绍";
				cell.linkText2 = "下载";
				cell.image = "http://www.jjmfc.com/index_files/windows.png";
				cell.linkType = "8";
				row.cells.push(cell);
			}
	
	  if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫Python选股";
				cell.text2 = "";
				cell.text3 = "行业应用 整合型";
				cell.text4 = "终端内置功能，使用Python对K线数据进行筛选";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486446&idx=1&sn=a56778329bd50c0abb21054adb235635&chksm=c057154ef7209c583f4f52ee83ec27a393d36bc3bb2cf2ad652eeaab2858b81eb8b496281664#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "8";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫平均涨跌幅";
				cell.text2 = "";
				cell.text3 = "行业应用 原创度100%";
				cell.text4 = "终端内置测试功能，计算所有品种整个历史的平均涨跌幅，相当于自定义指数";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486640&idx=1&sn=073a8e2a5c42f3b29a041f1d6930b559&chksm=c0571210f7209b06dd884afaf868cc8fdf61f57b1276d366eb7735824a8987a92510f8a517ab#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "8";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫成交量预计";
				cell.text2 = "";
				cell.text3 = "行业应用 原创度100%";
				cell.text4 = "终端内置测试功能，在开盘不久的时候计算出全天的成交量预计值";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486644&idx=1&sn=21f6a7cf6c8d9ddd63111979bc3d7b09&chksm=c0571214f7209b02220ea6523cc937817d344c5d47b519d13d088742835ebd6863b82073e6e1#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "8";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "金融板块数据";
				cell.text2 = "";
				cell.text3 = "行业应用 整合型";
				cell.text4 = "终端内置功能，获取各种证券金融板块的代码列表";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486274&idx=1&sn=3094c6740f512c8b5ccf88ba2c347b85&chksm=c05715e2f7209cf4c3654f557f729c369ebb10781363139ead3cfc24520cc5198450e3340be9#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "8";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "研发历史";
				cell.text2 = "";
				cell.text3 = "图片和视频";
				cell.text4 = "展示花卷猫从0-1的全过程";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486927&idx=1&sn=635b1e56a6babe6a39bb1b472ec0ef34&chksm=c057136ff7209a79a17559666c512814bbe15eee95ca1e9f3438afc57b162e64f7346a950213#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫多端互动";
				cell.text2 = "";
				cell.text3 = "基础功能 原创度100%";
				cell.text4 = "家庭或公司内私有部署的消息网络，支持不同平台和语言间互通";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485349&idx=1&sn=9527aae3e6b2c4d7b74d06aed7e828fd&chksm=c0571905f720901322e1743f96714441caccc9b9f089ea6442fd58691e7e51a12970ee9c18cf#rd";
				cell.link2 = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485567&idx=1&sn=aa1cd15706d5f7d72f2bcd40a93d3975&chksm=c05716dff7209fc9be4b8c08700bdc5ce68ad920900888c407b7464c0ae6f07cee328b5b1e3a#rd";
				cell.linkText1 = "介绍1";
				cell.linkText2 = "介绍2";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫浏览器";
				cell.text2 = "";
				cell.text3 = "基础功能 整合型";
				cell.text4 = "多平台综合浏览器，附带2万多个网页的收集整理和分类";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485365&idx=1&sn=c28d43be3af200c066587dda456b3990&chksm=c0571915f72090035ef3dada349be567ca72259e233ebf323b938248b2e14d9a3c3d8f2a76e1#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "花卷猫代码编辑器";
				cell.text2 = "";
				cell.text3 = "基础功能 原创度100%";
				cell.text4 = "完全自研的多平台代码编辑器，包括Windows、MacOS、iOS、Android四个版本";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486731&idx=1&sn=7ba1dc6db8acfde9d9b28b2a79ce9277&chksm=c05713abf7209abd30f20383555c365c7cfaeccc93611645216dfb24fc2d4121095c20af8eb6#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "自研编程语言";
				cell.text2 = "";
				cell.text3 = "基础功能 原创度100%";
				cell.text4 = "多平台FCScript引擎，用于扩展框架配置，以及多平台互通操作";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247485870&idx=1&sn=16f4e3f508957c26e3c3f97d016fad5e&chksm=c057170ef7209e18188d397459cf477b834d0d2a6300cc1979e8e7e7d411ce7e01866d2549ce#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "自研内存数据库";
				cell.text2 = "";
				cell.text3 = "基础功能 原创度100%";
				cell.text4 = "多平台数据库引擎，用于在服务端或客户端快速的保存数据";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486249&idx=1&sn=2bab2dbc83c8bd2f051fd30d3bc7a77f&chksm=c0571589f7209c9f638bfa709f82d05d39c3c970d69829e68655b4504fe9837c4aeee7c88971#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "自研Html引擎";
				cell.text2 = "";
				cell.text3 = "基础功能 原创度100%";
				cell.text4 = "多平台图形解析和渲染，使用可视化来快速生成界面";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247486299&idx=1&sn=2c72c4caa434ed8419d27ac4a5cf7f7e&chksm=c05715fbf7209ced29bb8b830cf6055134151d22c7df4d8c431e13f4474150d9b556d523e101#rd";
				cell.link2 = "";
				cell.linkText1 = "介绍";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
	
			if (true) {
				let row = new facecat.FCGridRow;
				exampleList.rows.push(row);
				let cell = new facecat.FCGridCell();
				cell.font = "Default,16";
				cell.colSpan = 1;
				cell.rowSpan = 1;
				cell.text1 = "联系方式";
				cell.text2 = "";
				cell.text3 = "微信号等";
				cell.text4 = "";
				cell.link = "https://mp.weixin.qq.com/s?__biz=Mzg5OTIzODg2Mw==&mid=2247487116&idx=1&sn=de5abf869a3f98f0474f1d2a6d4a2105&chksm=c057102cf720993a8593fdd246138694b82b42eb0382848f7c9a6aa29db741aa3f4aa721a205#rd";
				cell.link2 = "";
				cell.linkText1 = "打开";
				cell.linkText2 = "";
				cell.linkType = "1";
				row.cells.push(cell);
			}
			facecat.invalidate(gPaint);
			},
			methods: {  
	}
}
</script>
